Data centers can often be over-provisioned, lacking computing capacity available to handle workload peaks. During normal workloads, servers in a datacenter cluster can often run at low utilization but still consume a high amount of power. The challenge is to shut down servers when not needed and wake them up when necessary. As such, however, dynamic power management through server state assignment is not a trivial problem.
One challenge is to determine which servers can remain in an operating state and which can be sent to sleep to save power. Also, there can be multiple operating and sleep states. Energy and performance overheads in sleep-state transition are not negligible, and a simple greedy algorithm that makes the system enter the deepest sleep state when idling is inadequate. With respect to sleep-state transitioning, overhead can include storing processor state and turning off power, and waking up takes a finite amount of time and power.